package com.ruoyi.system.util;

import java.util.Collection;
import java.util.Map;

public class AbdulEmptyUtils {

    /**
     * 判断字符串是否为空（仅 null 或 trim 后为空）
     */
    public static boolean isEmpty(String str) {
        return str == null || str.trim().isEmpty();
    }

    /**
     * 判断字符序列(CharSequence)是否为空（仅 null 或长度为0）
     */
    public static boolean isEmpty(CharSequence charSequence) {
        return charSequence == null || charSequence.length() == 0;
    }

    /**
     * 判断整型(Integer)是否为空（仅 null 算空）
     */
    public static boolean isEmpty(Integer number) {
        return number == null;
    }

    /**
     * 判断长整型(Long)是否为空（仅 null 算空）
     */
    public static boolean isEmpty(Long number) {
        return number == null;
    }

    /**
     * 判断双精度浮点型(Double)是否为空（仅 null 算空）
     */
    public static boolean isEmpty(Double number) {
        return number == null;
    }

    /**
     * 判断 Float 是否为空（仅 null 算空）
     */
    public static boolean isEmpty(Float number) {
        return number == null;
    }

    /**
     * 判断任意对象是否为空（仅 null 算空）
     */
    public static boolean isEmpty(Object obj) {
        return obj == null;
    }

    /**
     * 判断数组是否为空（仅 null 算空）
     */
    public static <T> boolean isEmpty(T[] array) {
        return array == null || array.length == 0;
    }

    /**
     * 判断集合(Collection)是否为空（仅 null 或 size=0 算空）
     */
    public static <T> boolean isEmpty(Collection<T> collection) {
        return collection == null || collection.isEmpty();
    }

    /**
     * 判断 Map 是否为空（仅 null 或 size=0 算空）
     */
    public static <K, V> boolean isEmpty(Map<K, V> map) {
        return map == null || map.isEmpty();
    }

    /**
     * 判断布尔值是否为 false（包含 null 安全判断）
     */
    public static boolean isFalse(Boolean bool) {
        return Boolean.FALSE.equals(bool);
    }

    /**
     * 判断布尔值是否为 true（包含 null 安全判断）
     */
    public static boolean isTrue(Boolean bool) {
        return Boolean.TRUE.equals(bool);
    }

}
